// utils/login-check.js
const app = getApp()

// 全局登录检查装饰器
export function requireLogin(target, name, descriptor) {
  const original = descriptor.value
  
  descriptor.value = function(...args) {
    if (!app.globalData.isLogin) {
      // 显示登录弹窗
      showLoginModal()
      return
    }
    
    return original.apply(this, args)
  }
  
  return descriptor
}

// 页面登录检查
export function checkPageLogin() {
  if (!app.globalData.isLogin) {
    // 显示登录弹窗
    showLoginModal()
    return false
  }
  return true
}

// 方法登录检查
export function checkMethodLogin() {
  if (!app.globalData.isLogin) {
    // 显示登录弹窗
    showLoginModal()
    return false
  }
  return true
}

// 自动登录检查（在页面onShow时调用）
export function autoCheckLogin() {
  if (!app.globalData.isLogin) {
    const currentPages = getCurrentPages()
    const currentPage = currentPages[currentPages.length - 1]
    const currentRoute = currentPage.route
    
    // 排除登录页面本身
    if (currentRoute !== 'pages/login/login') {
      // 显示登录弹窗
      showLoginModal()
    }
  }
}

// 显示登录弹窗
export function showLoginModal() {
  // 获取当前页面实例
  const currentPages = getCurrentPages()
  const currentPage = currentPages[currentPages.length - 1]
  
  // 尝试调用当前页面的showLoginModal方法
  if (currentPage && currentPage.showLoginModal) {
    currentPage.showLoginModal()
  } else if (app && app.showLoginModal) {
    // 如果没有页面方法，尝试使用app中的showLoginModal方法
    app.showLoginModal()
  } else {
    // 如果都没有，显示默认的登录提示
    wx.showModal({
      title: '登录提示',
      content: '请先登录后再使用此功能',
      showCancel: false
    })
  }
} 